package com.neuedu.javase.io;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;

/**
 * @auth 金山老师
 * title:   书籍代码
 * creatime: 2022-10-04 11:03
 * 描述 :
 */
public class MyFile {
    public static void main(String[] args) throws IOException {


        /**
         * 代表文件、目录的引用
         */
        File file = new File("D:\\io\\a.txt");

        System.out.println("file.exists() = " + file.exists()); //判断file是否存在
        if(!file.exists()){
            boolean create = file.createNewFile();
            System.out.println("文件不存在: 创建文件的结果"+create);
        }else{
            System.out.println("文件已经存在");
        }

        File parentFile = file.getParentFile();//上级目录
        System.out.println("parentFile.isDirectory() = " + parentFile.isDirectory());

        File f1 = new File(parentFile ,  "\\d1\\d2\\b.txt");

        if(!f1.exists()){
            System.out.println( f1.getName()+"文件不存在，需要创建");
            boolean create = false;
            try {

                //获取路径
                System.out.println("f1.getPath() = " + f1.getPath());

                //file ---> D:\io\d1\d2\b.txt
                //parent--->D:\io\d1\d2
                File d2 = f1.getParentFile();
//                boolean createDir2 = d2.mkdir();//创建一级目录
                boolean createDir2 = d2.mkdirs();//创建一级目录
                System.out.println("createDir2 = " + createDir2);

                //createNewFile 创建文件的时候，需要目录存在
                //系统找不到指定的路径
                create = f1.createNewFile();
                System.out.println("create: "+create);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


        System.out.println("暂停");


        //立即删除
//        f1.delete()

        //退出虚拟机的时候删除
//        f1.deleteOnExit();



        //列目录
        File dirProgram = new File("D:\\","Program Files");

        String[] fileList = dirProgram.list();//所有文件对象的名称 String
        for (String fileName : fileList) {
            System.out.println("fileName = " + fileName);
        }


//        File[] files = dirProgram.listFiles();//所有文件对象  File[]
        File[] files = dirProgram.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith("rar");
            }
        });//所有文件对象  File[]
        for (File file1 : files) {
            System.out.printf("name:%s \t 最后一次修改时间 ：%d\t类型:%s\t文件大小:%d\tTotalSpace:%d\tUsableSpace:%dr\n",
                         file1.getName(),
                         file1.lastModified(),
                         file1.isFile()?"文件":"目录",
                         file1.length(),
                         file1.getTotalSpace(),
                         file1.getUsableSpace()
                    );
        }


    }
}
